package main

import (
	"fmt"
	"time"
)

/*
*
时间到了，执行只执行了一次
*/
func main() {
	// 1.timer基本使用
	timer1 := time.NewTimer(2 * time.Second)
	t1 := time.Now()
	fmt.Printf("t1:%v\n", t1)
	t2 := <-timer1.C
	fmt.Printf("t2:%v\n", t2)

	// 2.验证timer只能响应1次
	//timer2 := time.NewTimer(time.Second)
	//for {
	//	<-timer2.C
	//	fmt.Println("时间到")
	//}

	// 3.timer实现延时的功能
	//(1)
	//time.Sleep(time.Second)
	//(2)
	//timer3 := time.NewTimer(2 * time.Second)
	//<-timer3.C
	//fmt.Println("2秒到")
	//(3)time.After 在等待给定的一段时间后，向返回值发送当前时间，返回值是一个单向只读通道
	//<-time.After(2 * time.Second)
	//fmt.Println("2秒到")

	// 4.停止定时器
	//timer4 := time.NewTimer(2 * time.Second)
	//go func() {
	//	<-timer4.C
	//	fmt.Println("定时器执行了")
	//}()
	//b := timer4.Stop()
	//if b {
	//	fmt.Println("timer4已经关闭")
	//}

	// 5.重置定时器
	//timer5 := time.NewTimer(3 * time.Second)
	//timer5.Reset(1 * time.Second) //将定时器重新设置为1秒
	//fmt.Println(time.Now())
	//fmt.Println(<-timer5.C)

}
